#ifndef __SERVO_H
#define __SERVO_H

#include "tim.h"

#define SERVO_MAX_COMPARE 600.0
#define SERVO_MIN_COMPARE 100.0

#define SERVO_MAX_ANGLE 180.0
#define SERVO_MIN_ANGLE 0.0

#define ANGLE_TO_COMPARE(ang) (uint32_t)((ang * (SERVO_MAX_COMPARE - SERVO_MIN_COMPARE) / (SERVO_MAX_ANGLE - SERVO_MIN_ANGLE)) + SERVO_MIN_COMPARE)
#define COMPARE_TO_ANGLE(cmp) (uint32_t)((cmp - SERVO_MIN_COMPARE) * (SERVO_MAX_ANGLE - SERVO_MIN_ANGLE) / (SERVO_MAX_COMPARE - SERVO_MIN_COMPARE))

uint32_t servo_set_angle(TIM_HandleTypeDef *htim, uint32_t channel, uint32_t angle);
uint32_t servo_get_angle(TIM_HandleTypeDef *htim, uint32_t channel);

#endif /* !__SERVO_H */